<?php

/**
 * Controller de base de toute l'application
 * 
 * Controller/BaseController.php
 */

namespace Ticket\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\EventManager\EventManagerInterface;
use Zend\Session\Container;

class BaseController extends AbstractActionController {

    /**
     * Définition du gestionnaire des événements
     * 
     * @param \Zend\EventManager\EventManagerInterface $events
     */
    public function setEventManager(EventManagerInterface $events) {
        parent::setEvent($events);
        $this->changeLayout($events, $this);
    }

    /**
     * Adapteur de base de données
     * 
     * @return \Zend\Db\Adapter\Adapter
     */
    public function getAdapter() {
        return $this->getServiceLocator()
                        ->get('Zend\Db\Adapter\Adapter');
    }

    /**
     * Changement du layout pour une mise en forme en AJAX
     */
    public function changeToAjaxLayout() {
        $this->layout('ajax');
    }

    /**
     * 
     * @param \Zend\EventManager\EventManager $events
     * @param BaseController $controller
     */
    private function changeLayout($events, $controller) {
        $events->attach('dispatch', function()use($controller) {
            $controller->layout('base');
        });
    }

}
